/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Servlet;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import clases.*;
import javax.servlet.http.HttpSession;

/**
 *
 * @author ad
 */
public class EditarCliente_aux extends HttpServlet {
   
    /** 
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
                 //por si entra sin loguearse al serlet
        HttpSession sesionOk = request.getSession();
            if (sesionOk.getAttribute("Usuario") == null) {
            response.setContentType("text/html;charset=UTF-8");
            response.sendRedirect("/ProyectoBases2/index.jsp");
        }
    } 

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    } 

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);

        //capturamos todos los datos que nos manda la aplicacion
        Tipo [] param=new Tipo[10];
            param[0]=new Tipo(request.getParameter("direccion"),"direccion");
            param[1]=new Tipo(request.getParameter("foto1"),"foto");
            param[2]=new Tipo(request.getParameter("firma1"),"firma");
            param[3]=new Tipo(request.getParameter("mail"),"mail");
            param[4]=new Tipo(request.getParameter("telefono"),"telefono");
            param[5]=new Tipo(request.getParameter("password1"),"password1");
            param[6]=new Tipo(request.getParameter("password2"),"password2");
            param[7]=new Tipo(request.getParameter("agregar"),"agregar");
            param[8]=new Tipo(request.getParameter("serial"),"serial");
            param[9]=new Tipo(request.getParameter("nombre"),"nombre");

            Error_Data misErrores=new Error_Data();
            boolean k=actualizardatos(misErrores,param,response,request);
            if(k==true)
                misErrores.EscribirMensajes("Se realizo la actualizacion con exito", response,"Regresar","Editar_Cliente.jsp");
            else
                misErrores.EscribirMensajes("Ah ocurrido un Error y no se pudo completar la actualizacion <br> ingrese de nuevo los datos.", response,"Regresar","Editar_Cliente.jsp");
           
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    private boolean actualizardatos(Error_Data misErrores,Tipo[] param,HttpServletResponse response,HttpServletRequest request) {
        //verificar siempre direccion,mail,telefono
          //que tipo de usuario es para indicar si es valido o no el campo que se esta evaluando
         
          Conexion misconexion=new Conexion();
          boolean ingreso_web=false;
          boolean entro=false;
          boolean res=false;

       try{
      
            if(param[0].gettipo().compareTo("direccion")==0)
            {
                 if(misErrores.Solo_Letras1(param[0].getvalor())==false)
                 {
                      misErrores.EscribirMensajes("Error en el campo direccion <br>con el valor de: "+param[0].getvalor(), response,"Regresar","Editar_Cliente.jsp");
                     return false;
                 }
            }
            if(param[3].gettipo().compareTo("mail")==0)
            {
                  if(misErrores.Solo_Letras2(param[3].getvalor())==false)
                  {
                       misErrores.EscribirMensajes("Error en el campo mail <br>con el valor de: "+param[3].getvalor(), response,"Regresar","Editar_Cliente.jsp");
                      return false;
                  }
            }
            if(param[4].gettipo().compareTo("telefono")==0)
            {
                  if(misErrores.Solo_Numeros3(param[4].getvalor())==false)
                  {
                       misErrores.EscribirMensajes("Error en el campo telefono <br>con el valor de: "+param[4].getvalor(), response,"Regresar","Editar_Cliente.jsp");
                      return false;
                  }
            }


            HttpSession sesionOk = request.getSession();
            String id_modificar=(String) sesionOk.getAttribute("id_modificar");
            sesionOk.removeAttribute("id_modificar");//removemos el atributo

            //ahora verificamos que si este para realizar un nuevo usuario web
            

            if( param[7].getvalor()!=null)
            {
                 entro=true;
                //vamos a agregar un nuevo usuario web a nuestro cliente
                String password1=param[5].getvalor();
                String password2=param[6].getvalor();
                String usuarioNuevos=param[9].getvalor();
              
                    if(password1.compareTo(password2)!=0){
                        misErrores.EscribirMensajes("Error passwords no coinciden", response,"Regresar","Editar_Cliente.jsp");
                    }else if(misErrores.CaracterExtraño(password1)){//no tengan carcteres esxtraños
                        misErrores.EscribirMensajes("Error caracteres invalidos en el password",response,"Regresar","Editar_Cliente.jsp");
                    }else if(misErrores.CaracterExtraño(usuarioNuevos)){//caracter extraño
                        misErrores.EscribirMensajes("Error caracteres invalidos en el usuario",response,"Regresar","Editar_Cliente.jsp");
                    }else{
                        ingreso_web=misconexion.CrearUsuarioWEB_(usuarioNuevos, password2, response, misErrores, id_modificar);
                        
                    }
            }


            //buscamos el cliente con el serial indicado por medio de hibernate
            if(entro)
            {//si entro el ingreso web debe de ser verdadero
                if (ingreso_web)
                    res=misconexion.actualizardatosCliente(param,id_modificar);
            }else
              res=misconexion.actualizardatosCliente(param,id_modificar);

        
        }catch(Exception q)
        {
         System.out.println(q.getMessage());
         return false;
        }


        if(entro){//entro a ingresar la web
            if(res==true&&ingreso_web==true)
                return true;
            else
                return false;
        }else
            return res;

    }

}
